In order to control the attitude of a spacecraft, various rotating inertia members are used. One such inertia member is a control moment gyroscope (CMG). A CMG typically comprises a flywheel with a fixed or variable spin rate mounted to a gimbal assembly. The spin axis of the CMG can be tilted by moving the CMG using the gimbal assembly. This motion produces a gyroscopic torque orthogonal to the spin axis and gimbal axis.
To achieve full attitude control of a spacecraft, a minimum of three CMGs, arranged such that each CMG in the CMG array imparts torque about a linearly independent axis, is typically used. The CMGs are moved about their. gimbal axis in response to a command for torque from the spacecraft attitude-control system. Expressed mathematically, a Jacobian A maps the CMG gimbal rates into a three dimensional array torque:Aω=τwhere A is a 3×n Jacobian matrix, ω is a n×1 array of gimbal rates for the n gimbals, and τ is a 3×1 array of torque components to be imparted to the spacecraft. From the above equation and with a known torque command, τ, the individual gimbal rates for each CMG can be calculated. Using the known Moore-Penrose pseudoinverse to invert the Jacobian matrix, a set of possible gimbal rates is:ω=AT(AAT)−1τ
Inherent in the use of CMGs is the possibility that the CMGs' momentum vectors may line up in such a way that one or more components of the requested torque cannot be provided. Mathematically this situation occurs when the eigenvalues of AAT approach zero, causing (AAT)−1 to go to infinity. Or, equivalently, singularities occur when the determinant of the matrix AAT is equal to zero (expressed algebraically as det (AAT)=0). In the case of a 3×n matrix A, this is equivalent to saying the rank of the matrix AAT is two or less.
Different approaches have been devised to avoid singularities in the movement of CMGs. In one approach, to ensure that (AAT)−1 never is 0, (AAT)−1 is replaced by (AAT+εI)−1 where I is the identity matrix and ε is a small number. The use of a positive ε ensures that det(AAT+εI)−1 never becomes 0.
While useful in some instances, a drawback to this approach is that this approach changes the gimbal rate calculation. An analogous problem is the scalar expression
      1                  a        2            +      ɛ        .As a→0,
            1                        a          2                +        ɛ              ->          1      ɛ        ,which is well-behaved but not equal to
      1          a      2        .In the case of the Jacobian A, the pseudoinverse no longer exactly maps gimbal rates into the commanded torques because of the error ε introduces. This resulting error steers the spacecraft in the wrong direction and can introduce significant, undesired torque, especially near the singularity.
A further drawback of the (AAT+εI)−1 approach is that it does very little until the CMGs are already very near the singularity, where gimbal-rate capability (and therefore CMG array torque capability) can be undesirably low. Instead, what is needed is a method and system for singularity avoidance that keeps the CMG array well conditioned by steering toward optimal gimbal angles rather than allowing CMG array performance to degrade until, at the last instant, the CMG array dodges the singularity with undesired torques.